
struct TBossFeaturesReq{
	1: string uuid;
	2: i64 bossId;
	3: i64 jobId;
	4: i32 sourceType;
	5: list<string> featureCodes;
	6: string city;
	7: string position;
}

struct TBossFeaturesBatchReq{
	1: string uuid;
	2: list<TBossFeaturesReq> bossFeaturesReqList;
}



struct TGeekFeaturesReq{
	1: string uuid;
	2: i64 geekId;
	3: i64 expectId;
	4: i32 sourceType;
	5: list<string> featureCodes;
	6: string city;
	7: string position;
}

struct TGeekFeaturesBatchReq{
	1: string uuid;
	2: list<TGeekFeaturesReq> geekFeaturesReqList;
}



struct TCompanyFeaturesReq{
	1: string uuid;
	2: i64 companyId;
	3: list<string> featureCodes;
}

struct TCompanyFeaturesBatchReq{
	1: string uuid;
	2: list<TCompanyFeaturesReq> companyFeaturesReqList;
}





struct TGeekExpectTuple{
	1: i64 geekId;
	2: i64 expectId;
	3: i32 sourceType;
}

struct TBoss2GeekFeatureReq{
	1: string uuid;
	2: i64 bossId;
	3: i64 jobId;
	4: list<TGeekExpectTuple> geekExpectTuples
	5: list<string> featureCodes;
	6: string city;
	7: string position;
}



struct TBossJobTuple{
	1: i64 bossId;
	2: i64 jobId;
	3: i32 sourceType;
}

struct TGeek2BossFeatureReq{
	1: string uuid;
	2: i64 geekId;
	3: i64 expectId;
	4: list<TBossJobTuple> bossJobTuples
	5: list<string> featureCodes;
	6: string city;
	7: string position;
}





struct TBossFeature{
	1: string featureCode;
	2: binary value;
	3: i32    expireTime;
	4: i64 bossId;
	5: i32 sourceType

}

struct TBossJobFeature{
	1: string featureCode;
	2: binary value;
	3: i32    expireTime;
	4: i64 bossId;
	5: i64 jobId;
	6: i32 sourceType;
}


struct TGeekFeature{
	1: string featureCode;
	2: binary value;
	3: i32    expireTime;
	4: i64 geekId;
	5: i32 sourceType;
}


struct TGeekExpectFeature{
	1: string featureCode;
	2: binary value;
	3: i32    expireTime;
	4: i64 geekId;
	5: i64 expectId;
	6: i32 sourceType;
}


struct TCompanyFeature{
	1: string featureCode;
	2: binary value;
	3: i32    expireTime;
	4: i64 companyId;
	5: i32 sourceType

}


struct TFeatureFieldResp{
	1: string featureCode;
	2: binary rawValue;
	3: i32 type;

}

struct TFeatureResp{
	1: i64 userId;
	2: i64 id;
	3: i32 sourceType;
	4: list<TFeatureFieldResp> featureRespList;
	5: map<string, TFeatureFieldResp> respMap;
}

struct TFeatureBatchResp{
	1: list<TFeatureResp> featureRespList;
	2: map<string, TFeatureResp> respMap;
}



struct TFeatureResult{
	1: i32 respStatus;
	2: i32 rows;
	3: string msg;
}




service FeatureApiThrift{

	TFeatureResp getBossFeatures(1:TBossFeaturesReq tBossFeaturesReq);

	TFeatureBatchResp getBossFeaturesBatch(1:TBossFeaturesBatchReq tBossFeaturesBatchReq);


	TFeatureResp getGeekFeatures(1:TGeekFeaturesReq tGeekFeaturesReq);

	TFeatureBatchResp getGeekFeaturesBatch(1:TGeekFeaturesBatchReq  tGeekFeaturesBatchReq);


	TFeatureBatchResp getBossJob2GeekExpFeatures(1:TBoss2GeekFeatureReq tBossJob2GeekExpFeatureReq);

	TFeatureBatchResp getGeekExp2BossJobFeatures(1:TGeek2BossFeatureReq tGeekExp2BossJobFeatureReq);


	TFeatureResp getCompanyFeatures(1:TCompanyFeaturesReq tCompanyFeaturesReq);

	TFeatureBatchResp getCompanyFeaturesBatch(1:TCompanyFeaturesBatchReq tCompanyFeaturesBatchReq);


	TFeatureResult setBossFeature(1:TBossFeature tBossFeature);

	TFeatureResult setBossFeatureBatch(1:list<TBossFeature> tBossFeatures);

	TFeatureResult setBossJobFeature(1:TBossJobFeature tBossJobFeature);

	TFeatureResult setBossJobFeatureBatch(1:list<TBossJobFeature> tBossJobFeatures);

	TFeatureResult setGeekFeature(1:TGeekFeature tGeekFeature);

	TFeatureResult setGeekFeatureBatch(1:list<TGeekFeature> tGeekFeatures);

	TFeatureResult setExpectFeature(1:TGeekExpectFeature tGeekExpectFeature);

	TFeatureResult setExpectFeatureBatch(1:list<TGeekExpectFeature> tGeekExpectFeatures);


	TFeatureResult setCompanyFeature(1:TCompanyFeature tCompanyFeature);

	TFeatureResult setCompanyFeatureBatch(1:list<TCompanyFeature> tCompanyFeatures);

}